Amazon が所有する AWS Systems Manager ドキュメントの一覧を AWS CLI で取得して眺めてみた
コンバンハ、千葉(幸)です。
先日、以下のエントリを書きました。
ここでは、 SSM オートメーションドキュメントの一種であるAWSSupport-TroubleshootRDP
を使用し、 EC2 インスタンス上の OS に操作を行う、ということを試しました。
コマンドを一切考慮する必要がなく、ドキュメントを実行するだけで事前定義された内容を適用できました。そんなところがとても便利だなと感じたので、他にどういったドキュメントが用意されているのか気になってきました。
AWS CLI を使用すれば簡単に一覧が取得できたので、その結果を記載します。
先に補足
- ドキュメントは全部で 250個超あった
- 特に Automation と Command ドキュメントの種類が豊富
- 「プラットフォーム」の部分の情報は参考程度にした方が良さそう
- すべて 2021年3月現在の情報です
AWS Systems Manager ドキュメントとは
一覧を確認する前に、少しおさらいしておきましょう。
AWS Systems Manager ドキュメントは、Systems Manager が実行するアクションが定義されたドキュメントです。
いくつかドキュメントタイプがあり、タイプによって使用される機能が異なります。
ドキュメントタイプ | 使用する機能 |
---|---|
コマンド | Run Command、ステートマネージャー、メンテナンスウインドウ |
オートメーション | オートメーション、ステートマネージャー、メンテナンスウインドウ |
パッケージ | ディストリビューター |
セッション | セッションマネージャー |
ポリシー | ステートマネージャー |
変更カレンダー | Change Calendar |
Amazon が所有するものがあるほか、カスタマー側で作成することもできます。他のアカウントと共有したり、パブリックに公開することもできます。
詳細は以下を参照してください。
Amazon が所有するドキュメントのタイプを確認する
今回は以下の AWS CLI コマンドを使用し、 SSM ドキュメントをリスト化します。
先に結論から言うと、 Amazon が所有するドキュメントは 250個以上あります。
一気に出力しても分かりづらいので、まずはどういったドキュメントタイプが用意されているかを確認します。
aws ssm list-documents\ --filters Key=Owner,Values=Amazon\ --query 'DocumentIdentifiers[*].[DocumentType]'\ --output text\ | sort | uniq Automation Automation.ChangeTemplate Command Package Policy Session
以下のドキュメントタイプが該当することが分かりました。
- Automation
- Automation.ChangeTemplate
- Command
- Package
- Policy
- Session
ちなみに、AWS CLI リファレンスで確認できるドキュメントタイプは以下の通りです。
- ApplicationConfiguration
- ApplicationConfigurationSchema
- Automation
- ChangeCalendar
- Command
- DeploymentStrategy
- Package
- Policy
- Session
冒頭で確認したドキュメントタイプに当てはまらないものがあるし、コマンドで確認した結果のAutomation.ChangeTemplate
が CLI リファレンスに載ってないしで、いろいろと気になる部分はあるのですが、深追いはしないでおきましょう。
ドキュメントの一覧を出力してみた
今回は以下のコマンドを使用して一覧を確認していきます。
aws ssm list-documents --output table \ --filters Key=Owner,Values=Amazon Key=DocumentType,Values=<ドキュメントタイプ>\ --query 'DocumentIdentifiers[*].{DocumentName:Name, DocumentType:DocumentType,Platform1:PlatformTypes[0],Platform2:PlatformTypes[1],Platform3:PlatformTypes[2],Format:DocumentFormat,TargetType:TargetType,DocVer:DocumentVersion,Schema:SchemaVersion}'
ドキュメントタイプごとに、以下の情報を出力します。
- ドキュメントバージョン
- ドキュメント名
- ドキュメントタイプ
- フォーマット
- JSON or YAML
- プラットフォーム
- スキーマバージョン
- ターゲットタイプ
各項目について補足
上記で太字にした項目について補足します。
プラットフォーム
プラットフォームには、以下の値が入ります。
- Windows
- Linux
複数の値が入ることもあれば、一つも入らないこともあります。Systems Manager ドキュメントが対応している OS プラットフォームを表すものですが、直感的に受ける印象とは異なる場合が多いので、参考程度に捉えるのがよいかと思います。
また、AWS CLI は最新のバージョン(2.1.29)を使用したのですが、コマンドの結果と AWS リファレンスで確認できるものとは違いがあるように見受けられました。
例えば以下のリファレンスではプラットフォームとしてWindows
のみが記載されているのですが、aws ssm list-documents の結果ではWindows
とLinux
が含まれています。
加えて、以下のリファレンスのようにプラットフォームとしてmacOS
が記載されているドキュメントは複数あるのですが、aws ssm list-documents の結果としてmacOS
が含まれるドキュメントはありませんでした。
ざっと見ただけでもかなり差異がありそうだったので、やはりここでの結果は参考程度にするのが良さそうです。
スキーマバージョン
スキーマバージョンは、ドキュメントのタイプごとに対応しているバージョンが異なります。詳細については以下を参照してください。
ターゲットタイプ
ターゲットタイプはドキュメントの実行対象となる AWS リソースのタイプを表すものですが、これも直感的には理解しづらい場合があります。こちらも参考程度に捉えるのがいいでしょう。ほぼオートメーションドキュメントでのみ値が入ります。
早速一覧を確認していきます。
Automation ドキュメント
一番種類が豊富です。
AWSSupport-
の接頭辞を持つものはトラブルシュートの用途で使用できますし、AWSConfigRemediation-
の接頭辞を持つものは Config ルールと組み合わせて修復アクションとして使用するために準備されたものです。(単体でも実行できます。)
% aws ssm list-documents --output table \ --filters Key=Owner,Values=Amazon Key=DocumentType,Values=Automation\ --query 'DocumentIdentifiers[*].{DocumentName:Name, DocumentType:DocumentType,Platform1:PlatformTypes[0],Platform2:PlatformTypes[1],Platform3:PlatformTypes[2],Format:DocumentFormat,TargetType:TargetType,DocVer:DocumentVersion,Schema:SchemaVersion}' ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ListDocuments | +--------+------------------------------------------------------------------------+---------------+---------+------------+------------+------------+---------+----------------------------------------------+ | DocVer | DocumentName | DocumentType | Format | Platform1 | Platform2 | Platform3 | Schema | TargetType | +--------+------------------------------------------------------------------------+---------------+---------+------------+------------+------------+---------+----------------------------------------------+ | 1 | AWS-ASGEnterStandby | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::Volume | | 1 | AWS-ASGExitStandby | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::Volume | | 1 | AWS-AttachEBSVolume | Automation | JSON | Windows | Linux | None | 0.3 | None | | 1 | AWS-AttachIAMToInstance | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-ConfigureCloudTrailLogging | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWS-ConfigureCloudWatchOnEC2Instance | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-ConfigureS3BucketLogging | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::S3::Bucket | | 1 | AWS-ConfigureS3BucketVersioning | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::S3::Bucket | | 1 | AWS-CopySnapshot | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Snapshot | | 1 | AWS-CreateDynamoDbBackup | Automation | JSON | Windows | Linux | None | 0.3 | None | | 1 | AWS-CreateImage | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-CreateJiraIssue | Automation | JSON | Windows | Linux | None | 0.3 | None | | 1 | AWS-CreateManagedLinuxInstance | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-CreateManagedLinuxInstanceWithApproval | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-CreateManagedWindowsInstance | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-CreateManagedWindowsInstanceWithApproval | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-CreateRdsSnapshot | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBInstance | | 1 | AWS-CreateServiceNowIncident | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWS-CreateSnapshot | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::Volume | | 1 | AWS-DeleteCloudFormationStack | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::CloudFormation::Stack | | 1 | AWS-DeleteCloudFormationStackWithApproval | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::CloudFormation::Stack | | 1 | AWS-DeleteDynamoDbBackup | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWS-DeleteDynamoDbTableBackups | Automation | JSON | Windows | Linux | None | 0.3 | None | | 1 | AWS-DeleteEKSCluster | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWS-DeleteEbsVolumeSnapshots | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Volume | | 1 | AWS-DeleteImage | Automation | JSON | Windows | Linux | None | 0.3 | None | | 1 | AWS-DeleteSnapshot | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::Snapshot | | 1 | AWS-DetachEBSVolume | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Volume | | 1 | AWS-DisablePublicAccessForSecurityGroup | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::SecurityGroup | | 1 | AWS-DisableS3BucketPublicReadWrite | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::S3::Bucket | | 1 | AWS-EnableCloudTrail | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWS-EnableExplorer | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWS-EnableS3BucketEncryption | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::S3::Bucket | | 1 | AWS-ExportOpsDataToS3 | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWS-HelloWorld | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWS-PatchAsgInstance | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-PatchInstanceWithRollback | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-PublishSNSNotification | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::SNS::Topic | | 1 | AWS-RebootRdsInstance | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBInstance | | 1 | AWS-ReleaseElasticIP | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::EIP | | 1 | AWS-ResizeInstance | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-RestartEC2Instance | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-RestartEC2InstanceWithApproval | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-RunCfnLint | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWS-RunPacker | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWS-SetupInventory | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-SetupManagedInstance | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-SetupManagedRoleOnEc2Instance | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-StartEC2Instance | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-StartEC2InstanceWithApproval | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-StartRdsInstance | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBInstance | | 1 | AWS-StopEC2Instance | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-StopEC2InstanceWithApproval | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-StopRdsInstance | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBInstance | | 1 | AWS-TerminateEC2Instance | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-TerminateEC2InstanceWithApproval | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWS-UpdateCloudFormationStack | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::CloudFormation::Stack | | 1 | AWS-UpdateCloudFormationStackWithApproval | Automation | JSON | Windows | Linux | None | 0.3 | /AWS::CloudFormation::Stack | | 1 | AWS-UpdateEKSManagedNodegroupVersion | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWS-UpdateLinuxAmi | Automation | JSON | Windows | Linux | None | 0.3 | None | | 1 | AWS-UpdateWindowsAmi | Automation | JSON | Windows | Linux | None | 0.3 | None | | 6 | AWSSupport-ActivateWindowsWithAmazonLicense | Automation | JSON | Windows | Linux | None | 0.3 | None | | 1 | AWSSupport-CheckAndMountEFS | Automation | JSON | Windows | Linux | None | 0.3 | None | | 1 | AWSSupport-CollectEKSInstanceLogs | Automation | JSON | Windows | Linux | None | 0.3 | None | | 1 | AWSSupport-ConnectivityTroubleshooter | Automation | JSON | Windows | Linux | None | 0.3 | None | | 13 | AWSSupport-ExecuteEC2Rescue | Automation | JSON | Windows | Linux | None | 0.3 | None | | 5 | AWSSupport-GrantPermissionsToIAMUser | Automation | JSON | Windows | Linux | None | 0.3 | None | | 4 | AWSSupport-ListEC2Resources | Automation | JSON | Windows | Linux | None | 0.3 | None | | 2 | AWSSupport-ManageRDPSettings | Automation | JSON | Windows | Linux | None | 0.3 | None | | 4 | AWSSupport-ManageWindowsService | Automation | JSON | Windows | Linux | None | 0.3 | None | | 2 | AWSSupport-MigrateEC2ClassicToVPC | Automation | JSON | Windows | Linux | None | 0.3 | None | | 1 | AWSSupport-RecoverWorkSpace | Automation | JSON | Windows | Linux | None | 0.3 | None | | 1 | AWSSupport-RecoverWorkSpaceWithApproval | Automation | JSON | Windows | Linux | None | 0.3 | None | | 10 | AWSSupport-ResetAccess | Automation | JSON | Windows | Linux | None | 0.3 | None | | 5 | AWSSupport-SendLogBundleToS3Bucket | Automation | JSON | Windows | Linux | None | 0.3 | None | | 1 | AWSSupport-SetupConfig | Automation | JSON | Windows | Linux | None | 0.3 | None | | 2 | AWSSupport-SetupIPMonitoringFromVPC | Automation | JSON | Windows | Linux | None | 0.3 | None | | 2 | AWSSupport-ShareRDSSnapshot | Automation | JSON | Windows | Linux | None | 0.3 | None | | 11 | AWSSupport-StartEC2RescueWorkflow | Automation | JSON | Windows | Linux | None | 0.3 | None | | 2 | AWSSupport-TerminateIPMonitoringFromVPC | Automation | JSON | Windows | Linux | None | 0.3 | None | | 1 | AWSSupport-TroubleshootConnectivityToRDS | Automation | JSON | Windows | Linux | None | 0.3 | None | | 1 | AWSSupport-TroubleshootDirectoryTrust | Automation | JSON | Windows | Linux | None | 0.3 | None | | 3 | AWSSupport-TroubleshootRDP | Automation | JSON | Windows | Linux | None | 0.3 | None | | 4 | AWSSupport-TroubleshootS3PublicRead | Automation | JSON | Windows | Linux | None | 0.3 | None | | 2 | AWSSupport-TroubleshootSSH | Automation | JSON | Windows | Linux | None | 0.3 | None | | 6 | AWSSupport-UpgradeWindowsAWSDrivers | Automation | JSON | Windows | None | None | 0.3 | None | | 13 | AWSEC2-CloneInstanceAndUpgradeSQLServer | Automation | YAML | Windows | Linux | None | 0.3 | None | | 18 | AWSEC2-CloneInstanceAndUpgradeWindows | Automation | YAML | Windows | Linux | None | 0.3 | None | | 6 | AWSEC2-CloneInstanceAndUpgradeWindows2019 | Automation | YAML | Windows | Linux | None | 0.3 | None | | 3 | AWSEC2-SQLServerDBRestore | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWSDocs-ClassicLoadBalancerSSMDocument | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWSDocs-Configure-SSL-TLS-AL | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWSDocs-Configure-SSL-TLS-AL2 | Automation | YAML | Windows | Linux | None | 0.3 | None | | 3 | AWSDocs-HostingAWordPressBlog-AL | Automation | YAML | Windows | Linux | None | 0.3 | None | | 3 | AWSDocs-HostingAWordPressBlog-AL2 | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWSDocs-IncreaseAppAvailability | Automation | YAML | Windows | Linux | None | 0.3 | None | | 4 | AWSDocs-InstallALAMPServer-AL | Automation | YAML | Windows | Linux | None | 0.3 | None | | 4 | AWSDocs-InstallALAMPServer-AL2 | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWSDocs-LambdaWithS3SSMDocument | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWSDocs-S3StaticWebsite | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWSDocs-S3StaticWebsiteCustomDomain | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWSDocs-ScaleLoadBalanced | Automation | YAML | Windows | Linux | None | 0.3 | None | | 2 | AWSConfigRemediation-CancelKeyDeletion | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::KMS::Key | | 1 | AWSConfigRemediation-ConfigureCodeBuildProjectWithKMSCMK | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::CodeBuild::Project | | 1 | AWSConfigRemediation-ConfigureLambdaFunctionXRayTracing | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Lambda::Function | | 1 | AWSConfigRemediation-ConfigureS3BucketPublicAccessBlock | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::S3::Bucket | | 2 | AWSConfigRemediation-ConfigureS3PublicAccessBlock | Automation | YAML | Windows | Linux | None | 0.3 | None | | 2 | AWSConfigRemediation-CreateCloudTrailMultiRegionTrail | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::CloudTrail::Trail | | 1 | AWSConfigRemediation-CreateGuardDutyDetector | Automation | YAML | Windows | Linux | None | 0.3 | None | | 1 | AWSConfigRemediation-DeleteAPIGatewayStage | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::ApiGateway::Stage | | 1 | AWSConfigRemediation-DeleteAccessKeysFromCodeBuildProject | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::CodeBuild::Project | | 1 | AWSConfigRemediation-DeleteDefaultVPCRoutes | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::RouteTable | | 1 | AWSConfigRemediation-DeleteDynamoDbTable | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::DynamoDB::Table | | 1 | AWSConfigRemediation-DeleteEgressOnlyInternetGateway | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::EgressOnlyInternetGateway | | 1 | AWSConfigRemediation-DeleteElasticsearchDomain | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Elasticsearch::Domain | | 1 | AWSConfigRemediation-DeleteIAMRole | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::IAM:Role | | 1 | AWSConfigRemediation-DeleteLambdaFunction | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Lambda::Function | | 1 | AWSConfigRemediation-DeleteRDSCluster | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBCluster | | 1 | AWSConfigRemediation-DeleteRDSInstanceSnapshot | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBInstance | | 1 | AWSConfigRemediation-DeleteRedshiftCluster | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Redshift::Cluster | | 2 | AWSConfigRemediation-DeleteUnusedEBSVolume | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::Volume | | 1 | AWSConfigRemediation-DeleteUnusedENI | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::NetworkInterface | | 1 | AWSConfigRemediation-DeleteUnusedIAMGroup | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::IAM::Group | | 1 | AWSConfigRemediation-DeleteUnusedSecurityGroup | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::SecurityGroup | | 1 | AWSConfigRemediation-DeleteUnusedVPCNetworkACL | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::NetworkAcl | | 1 | AWSConfigRemediation-DetachIAMPolicy | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::IAM::Policy | | 1 | AWSConfigRemediation-DisableSubnetAutoAssignPublicIP | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::Subnet | | 1 | AWSConfigRemediation-EnableAPIGatewayTracing | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::ApiGateway::Stage | | 1 | AWSConfigRemediation-EnableAccountAccessAnalyzer | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::AccessAnalyzer::Analyzer | | 1 | AWSConfigRemediation-EnableCLBCrossZoneLoadBalancing | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::ElasticLoadBalancing::LoadBalancer | | 1 | AWSConfigRemediation-EnableCloudFrontOriginAccessIdentity | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::CloudFront::Distribution | | 1 | AWSConfigRemediation-EnableCloudFrontOriginFailover | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::CloudFront::Distribution | | 1 | AWSConfigRemediation-EnableCloudFrontViewerPolicyHTTPS | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::CloudFront::Distribution | | 1 | AWSConfigRemediation-EnableCopyTagsToSnapshotOnRDSCluster | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBCluster | | 1 | AWSConfigRemediation-EnableCopyTagsToSnapshotOnRDSDBInstance | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::Instance | | 1 | AWSConfigRemediation-EnableELBDeletionProtection | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::ElasticLoadBalancingV2::LoadBalancer | | 1 | AWSConfigRemediation-EnableEbsEncryptionByDefault | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::::Account | | 1 | AWSConfigRemediation-EnableElasticBeanstalkEnvironmentLogStreaming | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::ElasticBeanstalk::Environment | | 1 | AWSConfigRemediation-EnableEncryptionOnDynamoDbTable | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::DynamoDB::Table | | 2 | AWSConfigRemediation-EnableEnhancedMonitoringOnRDSInstance | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBInstance | | 1 | AWSConfigRemediation-EnableKeyRotation | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::KMS::Key | | 1 | AWSConfigRemediation-EnableLoggingForALBAndCLB | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::ElasticLoadBalancing::LoadBalancer | | 1 | AWSConfigRemediation-EnableMinorVersionUpgradeOnRDSDBInstance | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBInstance | | 1 | AWSConfigRemediation-EnableMultiAZOnRDSInstance | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBInstance | | 1 | AWSConfigRemediation-EnableNLBCrossZoneLoadBalancing | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::ElasticLoadBalancingV2::LoadBalancer | | 1 | AWSConfigRemediation-EnablePITRForDynamoDbTable | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::DynamoDB::Table | | 1 | AWSConfigRemediation-EnablePerformanceInsightsOnRDSInstance | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBInstance | | 1 | AWSConfigRemediation-EnableRDSClusterDeletionProtection | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBCluster | | 1 | AWSConfigRemediation-EnableRDSInstanceBackup | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBInstance | | 1 | AWSConfigRemediation-EnableRDSInstanceDeletionProtection | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBInstance | | 1 | AWSConfigRemediation-EnableRedshiftClusterAuditLogging | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Redshift::Cluster | | 1 | AWSConfigRemediation-EnableRedshiftClusterAutomatedSnapshot | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Redshift::Cluster | | 1 | AWSConfigRemediation-EnableRedshiftClusterEncryption | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Redshift::Cluster | | 1 | AWSConfigRemediation-EnableRedshiftClusterEnhancedVPCRouting | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Redshift::Cluster | | 1 | AWSConfigRemediation-EnableSecurityHub | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::SecurityHub::Hub | | 1 | AWSConfigRemediation-EnableSystemsManagerSessionManagerAuditLogsToS3 | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::SSM::Document | | 1 | AWSConfigRemediation-EnableWAFClassicRegionalLogging | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::WAFRegional::WebACL | | 1 | AWSConfigRemediation-EncryptLambdaEnvironmentVariablesWithCMK | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Lambda::Function | | 1 | AWSConfigRemediation-EncryptSNSTopic | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::SNS::Topic | | 1 | AWSConfigRemediation-EnforceEC2InstanceIMDSv2 | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 1 | AWSConfigRemediation-EnforceHttpsOnEsDomain | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Elasticsearch::Domain | | 1 | AWSConfigRemediation-EnforceSSLOnlyConnectionsToRedshiftCluster | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Redshift::Cluster | | 1 | AWSConfigRemediation-ModifyRDSInstancePortNumber | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::RDS::DBInstance | | 1 | AWSConfigRemediation-ModifyRedshiftClusterMaintenanceSettings | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Redshift::Cluster | | 1 | AWSConfigRemediation-ModifyRedshiftClusterNodeType | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Redshift::Cluster | | 1 | AWSConfigRemediation-MoveLambdaToVPC | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Lambda::Function | | 1 | AWSConfigRemediation-RemoveVPCDefaultSecurityGroupRules | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::SecurityGroup | | 1 | AWSConfigRemediation-RevokeUnusedIAMUserCredentials | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Lambda::Function | | 1 | AWSConfigRemediation-RotateSecret | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::SecretsManager::Secret | | 1 | AWSConfigRemediation-SetIAMPasswordPolicy | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::::Account | | 1 | AWSConfigRemediation-UpdateAPIGatewayMethodCaching | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::ApiGateway::Stage | | 1 | AWSConfigRemediation-UpdateElasticsearchDomainSecurityGroups | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::Elasticsearch::Domain | | 1 | AWSConfigRemediation-UpdateXRayKMSKey | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::XRay::EncryptionConfig | | 2 | AWSSQLServer-Backup | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 2 | AWSSQLServer-DBCC | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 2 | AWSSQLServer-Index | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | | 2 | AWSSQLServer-Restore | Automation | YAML | Windows | Linux | None | 0.3 | /AWS::EC2::Instance | +--------+------------------------------------------------------------------------+---------------+---------+------------+------------+------------+---------+----------------------------------------------+
よくあるマネジメントコンソール上での操作に対応したドキュメントがあるため、手順書を作ったり手作業で操作する代わりにオートメーションドキュメントを実行する、という置き換えもできそうですね。
各ドキュメントの詳細は以下から確認できます。
Automation.ChangeTemplate ドキュメント
こちらの結果は一つだけです。
% aws ssm list-documents --output table \ --filters Key=Owner,Values=Amazon Key=DocumentType,Values=Automation.ChangeTemplate\ --query 'DocumentIdentifiers[*].{DocumentName:Name, DocumentType:DocumentType,Platform1:PlatformTypes[0],Platform2:PlatformTypes[1],Platform3:PlatformTypes[2],Format:DocumentFormat,TargetType:TargetType,DocVer:DocumentVersion,Schema:SchemaVersion}' -------------------------------------------------------------------------------------------------------------------------------------------------- | ListDocuments | +--------+-------------------------------+----------------------------+---------+------------+------------+------------+----------+--------------+ | DocVer | DocumentName | DocumentType | Format | Platform1 | Platform2 | Platform3 | Schema | TargetType | +--------+-------------------------------+----------------------------+---------+------------+------------+------------+----------+--------------+ | 1 | AWS-HelloWorldChangeTemplate | Automation.ChangeTemplate | YAML | None | None | None | 0.3 | None | +--------+-------------------------------+----------------------------+---------+------------+------------+------------+----------+--------------+
個別の内容を確認すると以下の通り。
% aws ssm get-document --name AWS-HelloWorldChangeTemplate { "Name": "AWS-HelloWorldChangeTemplate", "DocumentVersion": "1", "Status": "Active", "Content": "{\n \"description\" : \"This change template demonstrates the feature set available for creating change templates for Change Manager. This template starts a Runbook workflow for the Automation document called AWS-HelloWorld.\",\n \"templateInformation\" : \"### Document Name: HelloWorldChangeTemplate\\n\\n## What does this document do?\\nThis change template demonstrates the feature set available for creating change templates for Change Manager. This template starts a Runbook workflow for the Automation document called AWS-HelloWorld.\\n\\n## Input Parameters\\n* ApproverSnsTopicArn: (Required) Amazon Simple Notification Service ARN for approvers.\\n* Approver: (Required) The name of the approver to send this request to.\\n* ApproverType: (Required) The type of reviewer.\\n * Allowed Values: IamUser, IamGroup, IamRole, SSOGroup, SSOUser\\n\\n## Output Parameters\\nThis document has no outputs \\n\",\n \"schemaVersion\" : \"0.3\",\n \"parameters\" : {\n \"ApproverSnsTopicArn\" : {\n \"type\" : \"String\",\n \"description\" : \"Amazon Simple Notification Service ARN for approvers.\"\n },\n \"Approver\" : {\n \"type\" : \"String\",\n \"description\" : \"IAM approver\"\n },\n \"ApproverType\" : {\n \"type\" : \"String\",\n \"description\" : \"Approver types for the request. Allows values include IamUser, IamGroup, IamRole, SSOGroup, and SSOUser.\"\n }\n },\n \"executableRunBooks\" : [ {\n \"name\" : \"AWS-HelloWorld\",\n \"version\" : \"1\"\n } ],\n \"emergencyChange\" : false,\n \"mainSteps\" : [ {\n \"name\" : \"SimpleApproveAction\",\n \"action\" : \"aws:approve\",\n \"timeoutSeconds\" : 3600,\n \"inputs\" : {\n \"Message\" : \"A sample change request has been submitted for your review in Change Manager. You can approve or reject this request.\",\n \"EnhancedApprovals\" : {\n \"NotificationArn\" : \"{{ ApproverSnsTopicArn }}\",\n \"Approvers\" : [ {\n \"approver\" : \"{{ Approver }}\",\n \"type\" : \"{{ ApproverType }}\",\n \"minRequiredApprovals\" : 1\n } ]\n }\n }\n } ]\n}", "DocumentType": "Automation.ChangeTemplate", "DocumentFormat": "JSON", "ReviewStatus": "APPROVED" }
これは先日のアップデートで対応した新機能 Systems Manager 変更マネージャーのためのドキュメントですね。使用イメージは以下エントリをご参照ください。
Command ドキュメント
OS に対して直接アクションを実行するものはこの括りになっていることが多いです。以下を使用したことがある方は多いのではないでしょうか。
AWS-RunPowerShellScript
AWS-RunShellScript
% aws ssm list-documents --output table \ --filters Key=Owner,Values=Amazon Key=DocumentType,Values=Command\ --query 'DocumentIdentifiers[*].{DocumentName:Name, DocumentType:DocumentType,Platform1:PlatformTypes[0],Platform2:PlatformTypes[1],Platform3:PlatformTypes[2],Format:DocumentFormat,TargetType:TargetType,DocVer:DocumentVersion,Schema:SchemaVersion}' --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ListDocuments | +--------+----------------------------------------------------------------+---------------+---------+------------+------------+------------+---------+--------------+ | DocVer | DocumentName | DocumentType | Format | Platform1 | Platform2 | Platform3 | Schema | TargetType | +--------+----------------------------------------------------------------+---------------+---------+------------+------------+------------+---------+--------------+ | 1 | AWS-ApplyAnsiblePlaybooks | Command | JSON | Linux | None | None | 2.2 | None | | 1 | AWS-ApplyChefRecipes | Command | JSON | Windows | Linux | None | 2.2 | None | | 1 | AWS-ApplyDSCMofs | Command | JSON | Windows | None | None | 2.2 | None | | 1 | AWS-ApplyPatchBaseline | Command | JSON | Windows | None | None | 1.2 | None | | 1 | AWS-ConfigureAWSPackage | Command | JSON | Windows | Linux | None | 2.0 | None | | 1 | AWS-ConfigureCloudWatch | Command | JSON | Windows | None | None | 1.2 | None | | 1 | AWS-ConfigureDocker | Command | JSON | Windows | Linux | None | 2.0 | None | | 1 | AWS-ConfigureKernelLivePatching | Command | YAML | Linux | None | None | 2.2 | None | | 1 | AWS-ConfigureWindowsUpdate | Command | JSON | Windows | None | None | 1.2 | None | | 1 | AWS-FindWindowsUpdates | Command | JSON | Windows | None | None | 1.2 | None | | 1 | AWS-InstallApplication | Command | JSON | Windows | None | None | 1.2 | None | | 1 | AWS-InstallMissingWindowsUpdates | Command | JSON | Windows | None | None | 1.2 | None | | 1 | AWS-InstallPowerShellModule | Command | JSON | Windows | None | None | 1.2 | None | | 1 | AWS-InstallSpecificWindowsUpdates | Command | JSON | Windows | None | None | 1.2 | None | | 1 | AWS-InstallWindowsUpdates | Command | YAML | Windows | None | None | 2.2 | None | | 1 | AWS-JoinDirectoryServiceDomain | Command | JSON | Windows | Linux | None | 1.2 | None | | 1 | AWS-ListWindowsInventory | Command | JSON | Windows | None | None | 1.2 | None | | 1 | AWS-RefreshAssociation | Command | JSON | Windows | Linux | None | 2.0 | None | | 1 | AWS-RunAnsiblePlaybook | Command | JSON | Linux | None | None | 2.0 | None | | 1 | AWS-RunDockerAction | Command | JSON | Windows | Linux | None | 2.0 | None | | 1 | AWS-RunDocument | Command | JSON | Windows | Linux | None | 2.2 | None | | 1 | AWS-RunInspecChecks | Command | JSON | Windows | Linux | None | 2.2 | None | | 1 | AWS-RunPatchBaseline | Command | JSON | Windows | Linux | None | 2.2 | None | | 1 | AWS-RunPatchBaselineAssociation | Command | JSON | Windows | Linux | None | 2.2 | None | | 1 | AWS-RunPatchBaselineWithHooks | Command | JSON | Windows | Linux | None | 2.2 | None | | 1 | AWS-RunPowerShellScript | Command | JSON | Windows | Linux | None | 1.2 | None | | 1 | AWS-RunRemoteScript | Command | JSON | Windows | Linux | None | 2.2 | None | | 1 | AWS-RunSaltState | Command | JSON | Linux | None | None | 2.0 | None | | 1 | AWS-RunShellScript | Command | JSON | Linux | None | None | 1.2 | None | | 1 | AWS-UpdateEC2Config | Command | JSON | Windows | None | None | 1.2 | None | | 1 | AWS-UpdateSSMAgent | Command | JSON | Windows | Linux | None | 1.2 | None | | 12 | AmazonInspector-ManageAWSAgent | Command | JSON | Windows | Linux | None | 2.2 | None | | 6 | AmazonCloudWatch-ManageAgent | Command | JSON | Windows | Linux | None | 2.2 | None | | 2 | AmazonCloudWatch-MigrateCloudWatchAgent | Command | JSON | Windows | None | None | 2.2 | None | | 14 | AWSSupport-RunEC2RescueForWindowsTool | Command | JSON | Windows | None | None | 2.2 | None | | 5 | AWSSAP-InstallBackint | Command | JSON | Windows | Linux | None | 2.2 | None | | 2 | AWSEC2-ApplicationInsightsCloudwatchAgentInstallAndConfigure | Command | JSON | Windows | Linux | None | 2.2 | None | | 2 | AWSEC2-CheckPerformanceCounterSets | Command | JSON | Windows | None | None | 2.2 | None | | 5 | AWSEC2-ConfigureSTIG | Command | JSON | Windows | Linux | None | 2.2 | None | | 7 | AWSEC2-CreateVssSnapshot | Command | JSON | Windows | None | None | 2.2 | None | | 2 | AWSEC2-DetectWorkload | Command | JSON | Windows | Linux | None | 2.2 | None | | 7 | AWSEC2-ManageVssIO | Command | JSON | Windows | None | None | 2.2 | None | | 6 | AWSEC2-RunSysprep | Command | JSON | Windows | None | None | 2.2 | None | | 4 | AWSEC2Launch-RunMigration | Command | JSON | Windows | None | None | 2.2 | None | | 8 | AWSFleetManager-AddUsersToGroups | Command | YAML | Windows | Linux | None | 2.2 | None | | 8 | AWSFleetManager-CreateGroup | Command | YAML | Windows | Linux | None | 2.2 | None | | 8 | AWSFleetManager-CreateUser | Command | YAML | Windows | Linux | None | 2.2 | None | | 6 | AWSFleetManager-CreateWindowsRegistryKey | Command | YAML | Windows | None | None | 2.2 | None | | 8 | AWSFleetManager-DeleteGroup | Command | YAML | Windows | Linux | None | 2.2 | None | | 8 | AWSFleetManager-DeleteUser | Command | YAML | Windows | Linux | None | 2.2 | None | | 6 | AWSFleetManager-DeleteWindowsRegistryKey | Command | YAML | Windows | None | None | 2.2 | None | | 6 | AWSFleetManager-DeleteWindowsRegistryValue | Command | YAML | Windows | None | None | 2.2 | None | | 4 | AWSFleetManager-GetFileSystemContent | Command | YAML | Windows | Linux | None | 2.2 | None | | 7 | AWSFleetManager-GetGroups | Command | YAML | Windows | Linux | None | 2.2 | None | | 4 | AWSFleetManager-GetUsers | Command | YAML | Windows | Linux | None | 2.2 | None | | 6 | AWSFleetManager-GetWindowsEvents | Command | YAML | Windows | None | None | 2.2 | None | | 1 | AWSFleetManager-GetWindowsRegistryContent | Command | YAML | Windows | None | None | 2.2 | None | | 8 | AWSFleetManager-RemoveUsersFromGroups | Command | YAML | Windows | Linux | None | 2.2 | None | | 6 | AWSFleetManager-SetWindowsRegistryValue | Command | YAML | Windows | None | None | 2.2 | None | +--------+----------------------------------------------------------------+---------------+---------+------------+------------+------------+---------+--------------+
AWSFleetManager-
接頭辞を持つものがいくつかあります。これは変更マネージャーと同じく去年のアップデートで対応した、 Systems Manager フリートマネージャーに関連するものです。
詳細は以下を参照してください。
Package ドキュメント
Package ドキュメントは Systems Manager ディストリビューターで使用するものです。AWS 謹製のツールをインストールする際に使用できます。
% aws ssm list-documents --output table \ --filters Key=Owner,Values=Amazon Key=DocumentType,Values=Package\ --query 'DocumentIdentifiers[*].{DocumentName:Name, DocumentType:DocumentType,Platform1:PlatformTypes[0],Platform2:PlatformTypes[1],Platform3:PlatformTypes[2],Format:DocumentFormat,TargetType:TargetType,DocVer:DocumentVersion,Schema:SchemaVersion,Owner:Owner}' ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ListDocuments | +--------+-----------------------------------------------------------+---------------+---------+---------+------------+------------+------------+---------+-----------------------+ | DocVer | DocumentName | DocumentType | Format | Owner | Platform1 | Platform2 | Platform3 | Schema | TargetType | +--------+-----------------------------------------------------------+---------------+---------+---------+------------+------------+------------+---------+-----------------------+ | 28 | AmazonCloudWatchAgent | Package | JSON | Amazon | None | None | None | 2.0 | None | | 5 | AWSSupport-EC2Rescue | Package | JSON | Amazon | None | None | None | 2.0 | None | | 4 | AWSSAP-Backint | Package | JSON | Amazon | None | None | None | 2.0 | None | | 9 | AWSEC2Launch-Agent | Package | JSON | Amazon | None | None | None | 2.0 | None | | 4 | AmazonEFSUtils | Package | JSON | Amazon | None | None | None | 2.0 | None | | 3 | AWSObservabilityExporter-JMXExporterInstallAndConfigure | Package | JSON | Amazon | None | None | None | 2.0 | None | | 6 | AWSCodeDeployAgent | Package | JSON | Amazon | None | None | None | 2.0 | /AWS::EC2::Instance | | 3 | AWSKinesisTap | Package | JSON | Amazon | None | None | None | 2.0 | None | | 5 | AwsVssComponents | Package | JSON | Amazon | None | None | None | 2.0 | None | | 13 | AWSPVDriver | Package | JSON | Amazon | None | None | None | 2.0 | None | | 2 | AWSNVMe | Package | JSON | Amazon | None | None | None | 2.0 | None | | 9 | AwsEnaNetworkDriver | Package | JSON | Amazon | None | None | None | 2.0 | None | +--------+-----------------------------------------------------------+---------------+---------+---------+------------+------------+------------+---------+-----------------------+
また、所有者がThirdParty
となるドキュメントも存在するので確認してみます。( Owner で複数条件が指定できると嬉しかったです、、)
% aws ssm list-documents --output table \ --filters Key=Owner,Values=ThirdParty Key=DocumentType,Values=Package\ --query 'DocumentIdentifiers[*].{DocumentName:Name, DocumentType:DocumentType,Platform1:PlatformTypes[0],Platform2:PlatformTypes[1],Platform3:PlatformTypes[2],Format:DocumentFormat,TargetType:TargetType,DocVer:DocumentVersion,Schema:SchemaVersion,Owner:Owner}' ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ListDocuments | +--------+---------------------------------------+---------------+---------+------------------------+------------+------------+------------+----------+--------------+ | DocVer | DocumentName | DocumentType | Format | Owner | Platform1 | Platform2 | Platform3 | Schema | TargetType | +--------+---------------------------------------+---------------+---------+------------------------+------------+------------+------------+----------+--------------+ | 3 | TrendMicro-CloudOne-WorkloadSecurity | Package | JSON | Trend Micro Cloud One | None | None | None | 2.0 | None | | 3 | DynatraceOneAgent | Package | JSON | Dynatrace | None | None | None | 2.0 | None | +--------+---------------------------------------+---------------+---------+------------------------+------------+------------+------------+----------+--------------+
ディストリビューターを使用することで、パッケージ配布を効率的に行うことができます。全体像のイメージは以下を参照してください。
Policy ドキュメント
タイプが Policy のドキュメントは一つだけです。これは Systems Manager インベントリで使用されるものです。
% aws ssm list-documents --output table \ --filters Key=Owner,Values=Amazon Key=DocumentType,Values=Policy\ --query 'DocumentIdentifiers[*].{DocumentName:Name, DocumentType:DocumentType,Platform1:PlatformTypes[0],Platform2:PlatformTypes[1],Platform3:PlatformTypes[2],Format:DocumentFormat,TargetType:TargetType,DocVer:DocumentVersion,Schema:SchemaVersion}' ------------------------------------------------------------------------------------------------------------------------------------ | ListDocuments | +--------+------------------------------+---------------+---------+------------+------------+------------+----------+--------------+ | DocVer | DocumentName | DocumentType | Format | Platform1 | Platform2 | Platform3 | Schema | TargetType | +--------+------------------------------+---------------+---------+------------+------------+------------+----------+--------------+ | 1 | AWS-GatherSoftwareInventory | Policy | JSON | Windows | Linux | None | 2.0 | None | +--------+------------------------------+---------------+---------+------------+------------+------------+----------+--------------+
少し長いですが、ドキュメントの内訳は以下のようなものです。
{ "schemaVersion": "2.0", "description": "Software Inventory Policy Document.", "parameters": { "applications": { "type": "String", "default": "Enabled", "description": "(Optional) Collect data for installed applications.", "allowedValues": [ "Enabled", "Disabled" ] }, "awsComponents": { "type": "String", "default": "Enabled", "description": "(Optional) Collect data for AWS Components like amazon-ssm-agent.", "allowedValues": [ "Enabled", "Disabled" ] }, "files": { "type": "String", "default": "", "description": "<p>(Optional, requires SSMAgent version 2.2.64.0 and above)<br/><br/>Linux example:<br/><em>[{\"Path\":\"/usr/bin\", \"Pattern\":[\"aws*\", \"*ssm*\"],\"Recursive\":false},{\"Path\":\"/var/log\", \"Pattern\":[\"amazon*.*\"], \"Recursive\":true, \"DirScanLimit\":1000}]<br/></em><br/>Windows example:<br/><em>[{\"Path\":\"%PROGRAMFILES%\", \"Pattern\":[\"*.exe\"],\"Recursive\":true}]</em><br/><br/>Learn More: http://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-about.html#sysman-inventory-file-and-registry </p>", "displayType": "textarea" }, "networkConfig": { "type": "String", "default": "Enabled", "description": "(Optional) Collect data for Network configurations.", "allowedValues": [ "Enabled", "Disabled" ] }, "windowsUpdates": { "type": "String", "default": "Enabled", "description": "(Optional, Windows OS only) Collect data for all Windows Updates.", "allowedValues": [ "Enabled", "Disabled" ] }, "instanceDetailedInformation": { "type": "String", "default": "Enabled", "description": "(Optional) Collect additional information about the instance, including the CPU model, speed, and the number of cores, to name a few.", "allowedValues": [ "Enabled", "Disabled" ] }, "services": { "type": "String", "default": "Enabled", "description": "(Optional, Windows OS only, requires SSMAgent version 2.2.64.0 and above) Collect data for service configurations.", "allowedValues": [ "Enabled", "Disabled" ] }, "windowsRegistry": { "type": "String", "default": "", "description": "<p>(Optional, Windows OS only, requires SSMAgent version 2.2.64.0 and above)<br/><br/>Example:<br />[{\"Path\":\"HKEY_CURRENT_CONFIG\\System\",\"Recursive\":true},{\"Path\":\"HKEY_LOCAL_MACHINE\\SOFTWARE\\Amazon\\MachineImage\", \"ValueNames\":[\"AMIName\"]}]<br/><br/>Learn More: http://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-about.html#sysman-inventory-file-and-registry </p>", "displayType": "textarea" }, "windowsRoles": { "type": "String", "default": "Enabled", "description": "(Optional, Windows OS only, requires SSMAgent version 2.2.64.0 and above) Collect data for Microsoft Windows role configurations.", "allowedValues": [ "Enabled", "Disabled" ] }, "customInventory": { "type": "String", "default": "Enabled", "description": "(Optional) Collect data for custom inventory.", "allowedValues": [ "Enabled", "Disabled" ] }, "billingInfo": { "type": "String", "default": "Enabled", "description": "(Optional) Collect billing info for license included applications.", "allowedValues": [ "Enabled", "Disabled" ] } }, "mainSteps": [ { "action": "aws:softwareInventory", "name": "collectSoftwareInventoryItems", "inputs": { "applications": "{{ applications }}", "awsComponents": "{{ awsComponents }}", "networkConfig": "{{ networkConfig }}", "files": "{{ files }}", "services": "{{ services }}", "windowsRoles": "{{ windowsRoles }}", "windowsRegistry": "{{ windowsRegistry}}", "windowsUpdates": "{{ windowsUpdates }}", "instanceDetailedInformation": "{{ instanceDetailedInformation }}", "billingInfo": "{{ billingInfo }}", "customInventory": "{{ customInventory }}" } } ] }
Systems Manager インベントリを使用することで、マネージドインスタンスの各種メタデータを収集可能です。どういった項目を収集するかの定義をこのドキュメントで行っています。
インベントリの使用イメージは以下を参照してください。
Session ドキュメント
最後は Session ドキュメントです。Systems Manager セッションマネージャーで使用されるドキュメントです。
% aws ssm list-documents --output table \ --filters Key=Owner,Values=Amazon Key=DocumentType,Values=Session\ --query 'DocumentIdentifiers[*].{DocumentName:Name, DocumentType:DocumentType,Platform1:PlatformTypes[0],Platform2:PlatformTypes[1],Platform3:PlatformTypes[2],Format:DocumentFormat,TargetType:TargetType,DocVer:DocumentVersion,Schema:SchemaVersion}' ----------------------------------------------------------------------------------------------------------------------------------------------- | ListDocuments | +--------+------------------------------------------+---------------+---------+------------+------------+------------+---------+--------------+ | DocVer | DocumentName | DocumentType | Format | Platform1 | Platform2 | Platform3 | Schema | TargetType | +--------+------------------------------------------+---------------+---------+------------+------------+------------+---------+--------------+ | 1 | AWS-PasswordReset | Session | JSON | Windows | Linux | None | 1.0 | None | | 1 | AWS-StartInteractiveCommand | Session | JSON | Windows | Linux | None | 1.0 | None | | 1 | AWS-StartPortForwardingSession | Session | JSON | Windows | Linux | None | 1.0 | None | | 1 | AWS-StartPortForwardingSessionToSocket | Session | JSON | Windows | Linux | None | 1.0 | None | | 1 | AWS-StartSSHSession | Session | JSON | Windows | Linux | None | 1.0 | None | | 8 | AWSFleetManager-CreateUserInteractive | Session | YAML | Windows | Linux | None | 1.0 | None | | 3 | AWSFleetManager-GetFileContent | Session | YAML | Windows | Linux | None | 1.0 | None | | 3 | AWSFleetManager-GetPerformanceCounters | Session | YAML | Windows | Linux | None | 1.0 | None | | 1 | AmazonECS-ExecuteInteractiveCommand | Session | JSON | Windows | Linux | None | 1.0 | None | +--------+------------------------------------------+---------------+---------+------------+------------+------------+---------+--------------+
例えばAWS-StartSSHSession
を使用する例は以下ページに記載があります。
以下のように IAM ポリシーの中にドキュメントを含めてアクセス制御することもできます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:StartSession", "Resource": [ "arn:aws:ec2:region:987654321098:instance/i-02573cafcfEXAMPLE", "arn:aws:ssm:*:*:document/AWS-StartSSHSession" ] } ] }
終わりに
AWS Systems Manager ドキュメントの一覧を確認してみました。セッション、ポリシーあたりは機能を使用する際に裏側で呼び出されている、というイメージが強いです。「こんな便利そうな機能あったんだ!」という意味ではやはりオートメーションやコマンドドキュメントを眺めるのが楽しかったです。
AWS-PublishSNSNotification
オートメーションドキュメントを修復アクションとして使用し、通知を実現するという使用例もあります。こんな風に使い道はいろいろありそうなので、ステキ用途を探っていきたいです。
以上、千葉(幸)がお送りしました。
参考
--query オプションの指定については以下エントリを参考にさせてもらいました。